Add ARM EFI boot support
authorRoy Franz <roy.franz@linaro.org>
Fri, 26 Sep 2014 22:25:01 +0000 (15:25 -0700)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 1 Oct 2014 10:38:44 +0000 (11:38 +0100)
commit6d70ea10d49f7d780c97f93d011f31b1131633da
treeb38be5c2d86fe180b3b24a284e8b2152f5612093
parenta98e8f599f8aee21fb92d0ae1760a36030323b2a
Add ARM EFI boot support

This patch adds EFI boot support for ARM based on the previous refactoring of
the x86 EFI boot code.  All ARM specific code is in the ARM efi-boot.h header
file, with the main EFI entry point common/efi/boot.c.  The PE/COFF header is
open-coded in head.S, which allows us to have a single binary be both an EFI
executable and a normal arm64 IMAGE file. There is currently no PE/COFF
toolchain support for arm64, so it is not possible to create the PE/COFF header
in the same manner as on x86.  This also simplifies the build as compared to
x86, as we always build the same executable, whereas x86 builds 2.  An ARM
version of efi-bind.h is added, which is based on the x86_64 version with the
x86 specific portions removed.  The Makefile in common/efi is different for x86
and ARM, as for ARM we always build in EFI support.
NR_MEM_BANKS is increased, as memory regions are now added from the UEFI memory map,
rather than memory banks from a DTB.  The UEFI memory map may be fragmented so a larger
number of regions will be used.

Signed-off-by: Roy Franz <roy.franz@linaro.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
[ ijc -- applied vga.h movement fixup patch from Roy, plus moved the xen/vga.h
         include before the asm/* ones. ]
14 files changed:
xen/arch/arm/Makefile
xen/arch/arm/arm64/head.S
xen/arch/arm/efi/Makefile [new file with mode: 0644]
xen/arch/arm/efi/efi-boot.h [new file with mode: 0644]
xen/arch/arm/efi/runtime.h [new file with mode: 0644]
xen/arch/arm/xen.lds.S
xen/arch/x86/efi/efi-boot.h
xen/arch/x86/efi/runtime.h [new file with mode: 0644]
xen/common/efi/boot.c
xen/common/efi/efi.h
xen/common/efi/runtime.c
xen/include/asm-arm/arm64/efibind.h [new file with mode: 0644]
xen/include/asm-arm/efibind.h [new file with mode: 0644]
xen/include/asm-arm/setup.h